home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Libraries / stdwin / Ports / x11 / caret.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-10-18  |  868 b   |  57 lines  |  [TEXT/????]

  1. /* X11 STDWIN -- caret operations */
  2.  
  3. #include "x11.h"
  4.  
  5. void
  6. wsetcaret(win, h, v)
  7.     WINDOW *win;
  8.     int h, v;
  9. {
  10.     _whidecaret(win);
  11.     if (h < 0 || v < 0)
  12.         h= v= -1;
  13.     win->careth= h;
  14.     win->caretv= v;
  15.     _wshowcaret(win);
  16. }
  17.  
  18. void
  19. wnocaret(win)
  20.     WINDOW *win;
  21. {
  22.     _whidecaret(win);
  23.     win->careth= win->caretv= -1;
  24. }
  25.  
  26. _wshowcaret(win)
  27.     WINDOW *win;
  28. {
  29.     if (!win->caretshown && win->careth >= 0 && win->caretv >= 0) {
  30.         wbegindrawing(win);
  31.         _winvertcaret(win);
  32.         wenddrawing(win);
  33.         win->caretshown= TRUE;
  34.     }
  35. }
  36.  
  37. _whidecaret(win)
  38.     WINDOW *win;
  39. {
  40.     if (win->caretshown) {
  41.         win->caretshown= FALSE;
  42.         wbegindrawing(win);
  43.         _winvertcaret(win);
  44.         wenddrawing(win);
  45.     }
  46. }
  47.  
  48. _winvertcaret(win)
  49.     WINDOW *win;
  50. {
  51.     /* Call this between w{begin,end}drawing only! */
  52.     
  53.     int left= win->careth, top= win->caretv;
  54.     int right= left+1, bottom= top + wlineheight();
  55.     winvert(left, top, right, bottom);
  56. }
  57.